#ifndef LUZES_H_
#define LUZES_H_

#include <GL/glui.h>
#include <iostream>

using namespace std;

class Luzes {

private:

	int GL_LIGHT;
	int enabled;

	float ambiente[4];
	float difusa[4];
	float especular[4];

	
	// float direccao[4]; // NAO SEI O QUE E PARA POR AQUI

public:
	Luzes(){}
	Luzes(int GL_LIGHT);

	void virtual aplica()=0;

	void setAmbiente(float r, float g, float b, float a);
	void setDifusa(float r, float g, float b, float a);
	void setEspecular(float r, float g, float b, float a);
	void setEnabled(int enabled);
	void setGL_LIGHT(int l);
	
	float * getAmbiente();
	float * getDifusa();
	float * getEspecular();
	int getEnabled() const;
	float getGL_LIGHT() const;

};

class Omni : public Luzes{

private:

	float localizacao[4];

public:
	
	Omni();
	Omni(int GL_LIGHT);
	void aplica();

	void setLocalizacao(float x, float y, float z, float w);
	float * getLocalizacao();

};

class Spot : public Luzes{

private:

	float angulo;
	float exponent;
	float localizacao[3];
	float target[3]; 
public:

	Spot();
	Spot(int GL_LIGHT);

	void aplica();

	void setLocalizacao(float x, float y, float z);
	void setTarget(float x, float y, float z);
	void setAngulo(float angulo);
	void setExponent(float exponent);
	
	float * getLocalizacao();
	float * getTarget();
	float getAngulo() const;
	float getExponent() const;
};

#endif